using System;
using EnvDTE;

namespace NUnitGenAddIn.Core.Test
{
    /// <summary>
    /// Mock Text Point
    /// </summary>
	public class MockTextPoint : TextPoint
	{
        /// <summary>
        /// Initializes a new instance of the <see cref="MockTextPoint"/> class.
        /// </summary>
        /// <param name="displayColumn">The display column.</param>
        /// <param name="line">The line.</param>
		public MockTextPoint(int displayColumn, int line)
		{
			DisplayColumn = displayColumn;
			Line = line;
		}

		#region TextPoint Members

        /// <summary>
        /// Gets the absolute char offset.
        /// </summary>
        /// <value>The absolute char offset.</value>
		public int AbsoluteCharOffset
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets a value indicating whether [at end of document].
        /// </summary>
        /// <value><c>true</c> if [at end of document]; otherwise, <c>false</c>.</value>
		public bool AtEndOfDocument
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets a value indicating whether [at end of line].
        /// </summary>
        /// <value><c>true</c> if [at end of line]; otherwise, <c>false</c>.</value>
		public bool AtEndOfLine
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets a value indicating whether [at start of document].
        /// </summary>
        /// <value><c>true</c> if [at start of document]; otherwise, <c>false</c>.</value>
		public bool AtStartOfDocument
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets a value indicating whether [at start of line].
        /// </summary>
        /// <value><c>true</c> if [at start of line]; otherwise, <c>false</c>.</value>
		public bool AtStartOfLine
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Creates the edit point.
        /// </summary>
        /// <returns></returns>
		public EditPoint CreateEditPoint()
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets the DTE.
        /// </summary>
        /// <value>The DTE.</value>
		public DTE DTE
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets or sets the display column.
        /// </summary>
        /// <value>The display column.</value>
        public int DisplayColumn { get; set; }

        /// <summary>
        /// Equals to.
        /// </summary>
        /// <param name="Point">The point.</param>
        /// <returns></returns>
		public bool EqualTo(TextPoint Point)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Greaters the than.
        /// </summary>
        /// <param name="Point">The point.</param>
        /// <returns></returns>
		public bool GreaterThan(TextPoint Point)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Lesses the than.
        /// </summary>
        /// <param name="Point">The point.</param>
        /// <returns></returns>
		public bool LessThan(TextPoint Point)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Gets or sets the line.
        /// </summary>
        /// <value>The line.</value>
        public int Line { get; set; }

        /// <summary>
        /// Gets the line char offset.
        /// </summary>
        /// <value>The line char offset.</value>
		public int LineCharOffset
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the length of the line.
        /// </summary>
        /// <value>The length of the line.</value>
		public int LineLength
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Gets the parent.
        /// </summary>
        /// <value>The parent.</value>
		public TextDocument Parent
		{
			get { throw new Exception("The method or operation is not implemented."); }
		}

        /// <summary>
        /// Tries to show.
        /// </summary>
        /// <param name="How">The how.</param>
        /// <param name="PointOrCount">The point or count.</param>
        /// <returns></returns>
		public bool TryToShow(vsPaneShowHow How, object PointOrCount)
		{
			throw new Exception("The method or operation is not implemented.");
		}

        /// <summary>
        /// Get_s the code element.
        /// </summary>
        /// <param name="Scope">The scope.</param>
        /// <returns></returns>
		public CodeElement get_CodeElement(vsCMElement Scope)
		{
			throw new Exception("The method or operation is not implemented.");
		}

		#endregion
	}
}